package com.lingchou.cloud.process.api.dto.result;

import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Builder;
import lombok.Getter;
import lombok.Setter;
import lombok.ToString;

import java.time.LocalDateTime;
import java.util.Map;

/**
 * 流程发起后的实例返回类
 *
 * @author lc
 */
@Getter
@Setter
@ToString
@Builder
@ApiModel(value = "ProcessInstanceDTO", description = "流程发起后的实例统一返回类")
public class ProcessInstanceDTO {

    /**
     * 唯一标识
     */
    @ApiModelProperty(value = "唯一标识")
    private String id;

    /**
     * 是否结束
     */
    @ApiModelProperty(value = "是否结束")
    private boolean ended;

    /**
     * 活动ID
     */
    @ApiModelProperty(value = "活动ID")
    private String activityId;

    /**
     * 流程实例的流程定义的ID。
     */
    @ApiModelProperty(value = "流程实例的流程定义的ID")
    private String processDefinitionId;

    /**
     * 流程实例的流程定义的名称。
     */
    @ApiModelProperty(value = "流程实例的流程定义的名称")
    private String processDefinitionName;

    /**
     * 流程实例的流程定义键。
     */
    @ApiModelProperty(value = "流程实例的流程定义键")
    private String processDefinitionKey;

    /**
     * 流程实例的流程定义的版本。
     */
    @ApiModelProperty(value = "流程实例的流程定义的版本")
    private Integer processDefinitionVersion;

    /**
     * 流程实例的流程定义的部署标识。
     */
    @ApiModelProperty(value = "流程实例的流程定义的部署标识")
    private String deploymentId;

    /**
     * 此流程实例的业务键。
     */
    @ApiModelProperty(value = "此流程实例的业务键")
    private String businessKey;

    /**
     * 如果流程实例已挂起，则返回true
     */
    @ApiModelProperty(value = "如果流程实例已挂起，则返回true")
    private boolean suspended;

    /**
     * 返回流程变量
     */
    @ApiModelProperty(value = "返回流程变量")
    private Map<String, Object> processVariables;

    /**
     * 该流程实例的租户标识符
     */
    @ApiModelProperty(value = "该流程实例的租户标识符")
    private String tenantId;

    /**
     * 返回此流程实例的名称。
     */
    @ApiModelProperty(value = "返回此流程实例的名称")
    private String name;

    /**
     * 返回此流程实例的描述。
     */
    @ApiModelProperty(value = "返回此流程实例的描述")
    private String description;

    /**
     * 返回此进程实例的本地化名称。
     */
    @ApiModelProperty(value = "返回此进程实例的本地化名称")
    private String localizedName;

    /**
     * 返回此流程实例的本地化描述。
     */
    @ApiModelProperty(value = "返回此流程实例的本地化描述")
    private String localizedDescription;


    /**
     * 返回此流程实例的开始时间。
     */
    @ApiModelProperty(value = "返回此流程实例的开始时间")
    private LocalDateTime startTime;

    /**
     * 返回此进程实例的用户id。
     */
    @ApiModelProperty(value = "返回此进程实例的用户id")
    private String startUserId;

    /**
     * 返回此流程实例的回调ID。
     */
    @ApiModelProperty(value = "返回此流程实例的回调ID")
    private String callbackId;

    /**
     * 返回此流程实例的回调类型。
     */
    @ApiModelProperty(value = "返回此流程实例的回调类型")
    private String callbackType;
}
